package es.acaixa.dcontroladores;

import java.sql.SQLException;
import java.util.List;

import es.acaixa.cnegocios.Produto;
import es.acaixa.epersistencia.RepositorioProduto;
import es.acaixa.fexcecoes.ProdutoExistenteException;
import es.acaixa.fexcecoes.ProdutoInexistenteException;
import es.acaixa.fexcecoes.SemProdutosException;

public class ControladorProduto {

	private RepositorioProduto repositorio;
	
	public ControladorProduto(){
		this.repositorio = new RepositorioProduto();
	}
	
	public void cadastrar(Produto novoProduto) throws ProdutoExistenteException, Exception{
		this.repositorio.cadastrar(novoProduto);
	}
	
	public Produto consultar(int id) throws ProdutoInexistenteException, Exception{
		Produto produto = this.repositorio.consultar(id);
		
		if(produto != null){
			return produto;
		}else{
			throw new ProdutoExistenteException(id);
		}
	}
	
//	public Produto consultar(String nome) throws ProdutoInexistenteException, Exception{
//		Produto produto = this.repositorio.consultar(nome);
//		
//		if(produto != null){
//			return produto;
//		}else{
//			throw new ProdutoExistenteException(nome);
//		}
//	}
//	
	public void remover(int id) throws ProdutoInexistenteException, Exception{
		this.repositorio.remover(id);
	}

	public void atualizar(int id, Produto novoProduto) throws ProdutoInexistenteException, Exception{
		this.repositorio.atualizar(id, novoProduto);
	}
	
	public List<Produto> listar() throws SemProdutosException{
		return this.repositorio.listar();
	}
	
	public void setDisponibilidade(boolean var, int id) throws ProdutoInexistenteException, SQLException, Exception{
		this.repositorio.setDisponibilidade(var, id);
	}

	//Getters and Setters
	public RepositorioProduto getRepositorio() {
		return repositorio;
	}

	public void setRepositorio(RepositorioProduto repositorio) {
		this.repositorio = repositorio;
	}	
	
}
